package com.hxd.mall.network.service;

import com.hxd.mall.module.product.home.bean.HomeBean;
import com.hxd.mall.module.product.home.bean.HomeProductListBean;
import com.hxd.mall.module.product.home.bean.HomeTypeBean;
import com.hxd.mall.module.product.home.bean.ProductUrlBean;
import com.hxd.mall.module.product.home.bean.ShareProductBean;
import com.hxd.mall.module.product.home.bean.TbAutherBean;
import com.hxd.mall.module.product.search.bean.HotSearchBean;
import com.hxd.mall.module.product.search.bean.ProductDetailBean;
import com.hxd.mall.module.product.search.bean.ProductDetailImageList;

import io.reactivex.Observable;
import okhttp3.ResponseBody;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.Url;

/**
 * @author
 */
public interface IConfigureFunctionApi {
    /**
     * 获取系统域名
     *
     * @return
     */
//    @GET("/sys/domain")
//    Observable<ResponseBody> getSystemDomin();

    /**
     * 获取首页数据
     *
     * @return
     */
//    @GET("mall_content/app/v2/home_page")
    @GET("mall_content/app/v1/navigations")
    Observable<HomeTypeBean> getHomeData();

    /**
     * 获取首页活动区数据
     *
     * @return
     */
    @GET("{url}")
    Observable<HomeTypeBean> getHomeProDuctData(@Path(value = "url", encoded = true) String url);

    /**
     * 上传首页淘宝授权的信息并且返回URL
     *
     * @return
     */
    @GET("mall_user/app/v1/client/channels/tb/auth_url")
    Observable<TbAutherBean> uploadTaoBaoInfo();

    /**
     * 获取首页商品数据
     *
     * @return
     */
    // @GET("mall_commodity/app/v1/home_page/skus")
    @GET()
//    Observable<HomeProductListBean> getHomeProductData(@Path(value = "url", encoded = true) String url, @Query("pageNum") Integer pageNum, @Query("pageSize") Integer pageSize);
    Observable<HomeProductListBean> getHomeProductData(@Url String url);

    /**
     * 获取精选包邮数据
     *
     * @return
     */
    @GET("{url}")
    Observable<HomeTypeBean> getJinXuanData(@Path(value = "url", encoded = true) String url);

    /**
     * 获取精选包邮列表数据
     *
     * @return
     */
    @GET()
    Observable<HomeProductListBean> getJinXuanListData(@Url String url );
//    Observable<HomeProductListBean> getJinXuanListData(@Url() String url);

    /**
     * 获取搜索热搜数据
     *
     * @return
     */
    @GET("mall_commodity/app/v1/search/skus/hots")
    Observable<HotSearchBean> searchHotsData();

    /**
     * 获取搜索商品数据
     *
     * @return , sort: String, has_coupon: Boolean
     */
    @GET("mall_commodity/app/v2/search/skus")
    Observable<HomeProductListBean> searchProductData(@Query("keyword") String key, @Query("pageNum") Integer pageNum, @Query("pageSize") Integer pageSize, @Query("sort") String sort, @Query("hasCoupon") String has_coupon, @Query("channel") String channel, @Query("adzoneId") String zoneId);

    /**
     * 获取搜索的商品详情
     *
     * @return
     */
    @GET("mall_commodity/app/v2/channels/{channel}/skus/{skuNo}")
    Observable<ProductDetailBean> getProductDetail(@Path("skuNo") String skuNo, @Path("channel") String channel);

    /**
     * 获取搜索的商品图片
     *
     * @return
     */
    @GET("mall_commodity/app/v2/channels/{channel}/pictures/skus/{skuNo}")
    Observable<ProductDetailImageList> fetchProductPic(@Path("skuNo") String skuNo, @Path("channel") String channel);

    /**
     * 获取微信分享数据
     *
     * @return
     */
    @GET("mall_commodity/app/v2/channels/{channel}/skus/{skuNo}/share")
    Observable<ShareProductBean> getProductShare(@Path("skuNo") String skuNo, @Path("channel") String channel);

    /**
     * 商品购买
     *
     * @return
     */
    @GET("mall_commodity/app/v2/channels/{channel}/skus/{skuNo}/buy")
    Observable<ProductUrlBean> buyProduct(@Path("skuNo") String skuNo, @Path("channel") String channel);


}
